#ifndef _UNITE
#define _UNITE

struct sUnite
{
	int type;
	int vie;
	float attaque;
	float defense;
	int deplacement;
	int equipe;
	int utilise;
};
typedef struct sUnite Unite;

/* Procédure InitialisationUnite : 
Précondition : l'unité u doit être créée.
Postcondition : initialisation d'unite selon le type et selon son equipe 
Paramètres en mode donnée : type, equipe
Paramètres en mode donnée-résultat : u */
void InitialisationUnite (Unite * u,const int type ,const int equipe);


/* Procédure DestructionUnite : 
Précondition : u doit être correctement initialisé.
Postcondition : remet toutes les valeurs de la structure Unite à 0 
Paramètre en mode donnée-résultat : */
void DestructionUnite(Unite * u);


/* Procédure : ModifierUtiliseUnite 
Précondition :  - u correctement initialisé
		- utilise est égal à 0 si l'unite peut être utilisé et à 1 si elle ne peut plus bouger avant le prochain tour. 
Postcondition: change le champ "utilise" lorsqu'un personnage est utilisé ou peut de nouveau se déplacer
Paramètre en mode donnée-résultat : u
Paramètre en mode donnée : utilise */
void ModifierUtiliseUnite (Unite * u, int utilise);


/*Fonction CombatUnite -> entier
Précondition : - u1 et u2 correctement initialisés
   	       - u1 est l'unité qui attaque la première.
Postcondition: -  fait un combat entre l'unité 1 et l'unité 2 : 
		  renvoie 0 si les deux unités sont en vie
		  renvoie 1 si l'unité 2 n'a plus de vie (et n'enlève pas la vie de l'unite1).
                  renvoie 2 si l'unité 1 n'a plus de vie 
Paramètre en mode donnée-résultats : u1, u2 */
int CombatUnite (Unite * u1, Unite * u2);


/*Procédure UniteTestRegression 
Précondition : aucune
Postcondition : teste toutes les fonctions et procédures du module Unite */
void UniteTestRegression();

#endif
